package messages;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import debug.Dbg;

public class RegistServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");

		//	パラメータを表示（デバッグ）
		Dbg.print(req);
		//	文字列定数
		final String INSERT_SQL = "insert into messages"
				+ " (account, password, message, user_agent, remote_addr)"
				+ " values (?, ?, ?, ?,  ?)";
		//	パラメータを取得
//		resp.setContentType("text/plain charset=UTF-8");
		String account = req.getParameter("account");				//	名前
		String password = req.getParameter("password");
		String message = req.getParameter("message");			//	メッセージ
		String userAgent = req.getHeader("User-Agent");
		String remoteAddr = req.getRemoteAddr();
		
		
		StringBuffer msg = new StringBuffer();							//	エラーメッセージを空で準備
		//	パラメータをチェックする
		if (account == null || account.length() == 0) {
			msg.append("名前を入力してください<br />");
		}
		if (message == null || message.length() == 0) {
			msg.append("メッセージを入力してください<br />");
		}
		if(password == null || password.length() == 0)
		{
			msg.append("パスワードを入力してください。");
		}
		//	パラメータが正常な場合、データベースに登録する
		if (msg.length() == 0) {
			try {
				Connection con = DBManager.getConnection();		//	DB接続
																							//	SQL準備
				PreparedStatement ps = con.prepareStatement(INSERT_SQL);
				ps.setString(1, account);
				ps.setString(2, password);
				ps.setString(3, message);
//				ps.setString(4, delete_flag);
				ps.setString(4, userAgent);
				ps.setString(5, remoteAddr);
				
				
				ps.executeUpdate();												//	データを登録する

				ps.close();																//	後処理
				con.close();
			}
			catch (SQLException e) {
				e.printStackTrace();
				msg.append("データベース関連の例外が発生しました");
			}
		}
		//	入力漏れなどの場合、入力画面へ遷移する
		if (msg.length() > 0) {
			req.setAttribute("msg", msg.toString());

			RequestDispatcher d =
					req.getRequestDispatcher("entry.jsp");
			d.forward(req, resp);
		}
		//	正常に登録できた場合、一覧画面へ遷移する
		else {
			resp.sendRedirect("ListServlet");
		}
	}
}
